﻿using NewRetail.Application.Core.Entity;

namespace NewRetail.Application.Components.WeChat.CardVoucher.Entity
{
    public class CardVoucherInfo : BaseEntity
    {
        /// <summary>
        /// 批次号，微信为每个代金券批次分配的唯一ID
        /// </summary>
        public string stockId { get; set; }
        /// <summary>
        /// 商户单据号
        /// </summary>
        public string outRequestNo { get; set; }
        /// <summary>
        /// 可用开始时间。遵循rfc3339标准格式，格式为YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE，YYYY-MM-DD表示年月日，T出现在字符串中，
        /// 表示time元素的开头，HH:mm:ss.sss表示时分秒毫秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。
        /// 例如：2015-05-20T13:29:35.120+08:00表示，北京时间2015年5月20日 13点29分35秒。
        /// 1、开始时间不可早于当前时间 2、不能创建365天后开始的批次 3、批次可用时间范围最长为90天
        /// </summary>
        public string availableBeginTime { get; set; }
        /// <summary>
        /// 可用结束时间。遵循rfc3339标准格式，格式为YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE，YYYY-MM-DD表示年月日，T出现在字符串中，
        /// 表示time元素的开头，HH:mm:ss.sss表示时分秒毫秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。
        /// 例如：2015-05-20T13:29:35.120+08:00表示，北京时间2015年5月20日 13点29分35秒。
        /// 1、结束时间需晚于开始时间 2、可用时间最长为90天 3、有效时间间隔最短为1s
        /// </summary>
        public string availableEndTime { get; set; }
        /// <summary>
        /// 批次名称
        /// </summary>
        public string stockName { get; set; }
        /// <summary>
        /// 批次类型，仅支持：NORMAL：固定面额满减券批次
        /// </summary>
        public string stockType { get; set; } = "NORMAL";
        /// <summary>
        /// 营销经费。枚举值：
        /// true：免充值
        /// false：预充值
        /// </summary>
        public bool noCash { get; set; }
        /// <summary>
        /// 最大发券数。1、发放总个数最少5个   2、发放总个数最多1000万个
        /// </summary>
        public long maxCoupons { get; set; }
        /// <summary>
        /// 最大发券预算，当营销经费no_cash选择预充值false时，激活批次时会从制券商户的余额中扣除预算，请保证账户金额充足，单位：分
        /// max_amount需要等于coupon_amount（面额） * max_coupons（发放总上限）
        /// 校验规则：批次总预算最多1000万元
        /// </summary>
        public long maxAmount { get; set; }
        /// <summary>
        /// 允许指定单天最大发券预算，单位：分。
        /// </summary>
        public long maxAmountByDay { get; set; }
        /// <summary>
        /// 活动期间每个用户可领个数，当开启了自然人限领时，多个微信号同属于一个身份证时，视为同一用户。
        /// </summary>
        public int maxCouponsPerUser { get; set; }
        /// <summary>
        /// 当开启了自然人限领时，多个微信号同属于一个身份证时，视为同一用户，枚举值 true：是 false：否
        /// </summary>
        public bool naturalPersonLimit { get; set; }
        /// <summary>
        /// 若开启防刷拦截，当用户命中恶意、小号、机器、羊毛党、黑产等风险行为时，无法成功发放代金券.枚举值 true：是 false：否
        /// </summary>
        public bool preventApiAbuse { get; set; }
        /// <summary>
        /// 代金券是否已激活
        /// </summary>
        public bool isActive { get; set; }
        /// <summary>
        /// 代金券批次,状态枚举值： unactivated：未激活  audit：审核中  running：运行中  stoped：已停止  paused：暂停发放
        /// </summary>
        public string cardStatus { get; set; }
        /// <summary>
        /// 已发券数量
        /// </summary>
        public int distributedCoupons { get; set; }
        /// <summary>
        /// 券面额，单位：分
        /// </summary>
        public long couponAmount { get; set; }
    }
}
